<?xml version="1.0"?>
<doc>
    <assembly>
        <name>TVA.Communication</name>
    </assembly>
    <members>
        <member name="T:TVA.Communication.TransportStatistics">
            <summary>
            A class for statistics related to server-client communication.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastSend">
            <summary>
            <see cref="T:System.DateTime"/> of the last send operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastReceive">
            <summary>
            <see cref="T:System.DateTime"/> of the last receive operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastBytesSent">
            <summary>
            Number of bytes sent in the last send operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.LastBytesReceived">
            <summary>
            Number of bytes received in the last receive operation.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.TotalBytesSent">
            <summary>
            Total number of bytes sent.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportStatistics.TotalBytesReceived">
            <summary>
            Total number of bytes received.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportStatistics.Reset">
            <summary>
            Resets the <see cref="T:TVA.Communication.TransportStatistics"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportStatistics.UpdateBytesSent(System.Int32)">
            <summary>
            Updates statistics related to sending of data.
            </summary>
            <param name="bytesSent">Number of bytes sent in the send operation.</param>
        </member>
        <member name="M:TVA.Communication.TransportStatistics.UpdateBytesReceived(System.Int32)">
            <summary>
            Updates statistics related to receiving of data.
            </summary>
            <param name="bytesReceived">Number of bytes received in the receive operation.</param>
        </member>
        <member name="T:TVA.Communication.TcpClient">
            <summary>
            Represents a TCP-based communication client.
            </summary>
            <remarks>
            The <see cref="P:TVA.Communication.TcpClient.Client"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> (Example: "Server=localhost:8888; Interface=127.0.0.1")
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.TcpClient"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static TcpClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new TcpClient("Server=localhost:8888");
                    s_client.Handshake = false;
                    s_client.PayloadAware = false;
                    s_client.ReceiveTimeout = -1;
                    s_client.MaxConnectionAttempts = 5;
                    s_client.Encryption = CipherStrength.None;
                    s_client.Compression = CompressionStrength.NoCompression;
                    s_client.SecureSession = false;
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.ReceiveDataComplete += s_client_ReceiveDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Transmit user input to the server.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        s_client.Send(input);
                    }
            
                    // Disconnect the client on shutdown.
                    s_client.Dispose();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to server.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to server.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from server.");
                }
            
                static void s_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}.", s_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="T:TVA.Communication.ClientBase">
            <summary>
            Base class for a client involved in server-client communication.
            </summary>
        </member>
        <member name="T:TVA.Communication.IClient">
            <summary>
            Defines a client involved in server-client communication.
            </summary>
        </member>
        <member name="M:TVA.Communication.IClient.Connect">
            <summary>
            Connects client to the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.IClient.ConnectAsync">
            <summary>
            Connects client to the server asynchronously.
            </summary>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.IClient.Disconnect">
            <summary>
            Disconnects client from the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.IClient.Send(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.IClient.SendAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.IClient.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.IClient.ReceiveData"/> event handler. Calling this method outside this event
            will have unexpected results.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionAttempt">
            <summary>
            Occurs when client is attempting connection to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionEstablished">
            <summary>
            Occurs when client connection to the server is established.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionTerminated">
            <summary>
            Occurs when client connection to the server is terminated.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.ConnectionException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered during connection attempt to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.SendDataStart">
            <summary>
            Occurs when the client begins sending data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.SendDataComplete">
            <summary>
            Occurs when the client has successfully sent data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.IClient.SendDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when sending data to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.ReceiveData">
            <summary>
            Occurs when unprocessed data has been received from the server.
            </summary>
            <remarks>
            <para>
            This event can be used to receive a notification that server data has arrived. The <see cref="M:TVA.Communication.IClient.Read(System.Byte[],System.Int32,System.Int32)"/> method can then be used
            to copy data to an existing buffer. In many cases it will be optimal to use an existing buffer instead of subscribing to the
            <see cref="E:TVA.Communication.IClient.ReceiveDataComplete"/> event, however, the data that is available after calling the <see cref="M:TVA.Communication.IClient.Read(System.Byte[],System.Int32,System.Int32)"/> method
            will be the original unprocessed data received by the client, i.e., not optionally decrypted or decompressed data.
            </para>
            <para>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the number of bytes received in the buffer from the server.
            </para>
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.ReceiveDataComplete">
            <summary>
            Occurs when data received from the server has been processed and is ready for consumption.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is a new buffer containing post-processed data received from the server starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of post-processed bytes received in the buffer from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.ReceiveDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when receiving data from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IClient.UnhandledUserException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered in a user-defined function via an event dispatch.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> thrown by the user-defined function.
            </remarks>
        </member>
        <member name="P:TVA.Communication.IClient.ConnectionString">
            <summary>
            Gets or sets the data required by the client to connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.MaxConnectionAttempts">
            <summary>
            Gets or sets the maximum number of times the client will attempt to connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.SendBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ServerUri">
            <summary>
            Gets the server URI.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ClientState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.IClient.TransportProtocol"/> used by the client for the transportation of data with the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IClient.ConnectionTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the client has been connected to the server.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultMaxConnectionAttempts">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.MaxConnectionAttempts"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultSendBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.SendBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultPersistSettings">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientBase.DefaultSettingsCategory">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.SettingsCategory"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.#ctor">
            <summary>
            Initializes a new instance of the client.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.#ctor(TVA.Communication.TransportProtocol,System.String)">
            <summary>
            Initializes a new instance of the client.
            </summary>
            <param name="transportProtocol">One of the <see cref="P:TVA.Communication.ClientBase.TransportProtocol"/> values.</param>
            <param name="connectionString">The data used by the client for connection to a server.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event handler. Calling this method outside this event
            will have unexpected results.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.ValidateConnectionString(System.String)">
            <summary>
            When overridden in a derived class, validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">The connection string to be validated.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.Initialize">
            <summary>
            Initializes the client.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ClientBase.Initialize"/> is to be called by user-code directly only if the client is not consumed through the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.BeginInit">
            <summary>
            Performs necessary operations before the client properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ClientBase.BeginInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through 
            the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.EndInit">
            <summary>
            Performs necessary operations after the client properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ClientBase.EndInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through the 
            designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.SaveSettings">
            <summary>
            Saves client settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ClientBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ClientBase.LoadSettings">
            <summary>
            Loads saved client settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ClientBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ClientBase.Connect">
            <summary>
            Connects the client to the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.ConnectAsync">
            <summary>
            Connects the client to the server asynchronously.
            </summary>
            <exception cref="T:System.FormatException">Server property in <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> is invalid.</exception>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the client when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
            <remarks>
            Derived classes are expected to override this method with protocol specific connection operations. Call the base class
            method to obtain an operational wait handle if protocol connection operation doesn't provide one already.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.String)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.Object)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.Byte[])">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Send(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.String)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.Object)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.Byte[])">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.SendAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ClientBase.Disconnect">
            <summary>
            When overridden in a derived class, disconnects client from the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionAttempt">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionAttempt"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionEstablished">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionEstablished"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionTerminated">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionTerminated"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnConnectionException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ConnectionException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnSendDataStart">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataStart"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnSendDataComplete">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataComplete"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnSendDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnReceiveData(System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event.
            </summary>
            <param name="size">Number of bytes received from the client.</param>
            <remarks>
            This event is automatically raised by call to <see cref="M:TVA.Communication.ClientBase.OnReceiveDataComplete(System.Byte[],System.Int32)"/> so that inheritors
            never need to worry about raising this event. This method is only included here in case any custom client
            implementations need to explicitly raise this event.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnReceiveDataComplete(System.Byte[],System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataComplete"/> event.
            </summary>
            <param name="data">Data received from the client.</param>
            <param name="size">Number of bytes received from the client.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnReceiveDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.OnUnhandledUserException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.UnhandledUserException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.UnhandledUserException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the client and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.ClientBase.ReConnect">
            <summary>
            Re-connects the client if currently connected.
            </summary>
        </member>
        <member name="M:TVA.Communication.ClientBase.Create(System.String)">
            <summary>
            Create a communications client
            </summary>
            <remarks>
            Note that typical connection string should be prefixed with a "protocol=tcp", "protocol=udp", "protocol=serial" or "protocol=file"
            </remarks>
            <returns>A communications client.</returns>
            <param name="connectionString">Connection string for the client.</param>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionAttempt">
            <summary>
            Occurs when client is attempting connection to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionEstablished">
            <summary>
            Occurs when client connection to the server is established.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionTerminated">
            <summary>
            Occurs when client connection to the server is terminated.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.ConnectionException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered during connection attempt to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.SendDataStart">
            <summary>
            Occurs when the client begins sending data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.SendDataComplete">
            <summary>
            Occurs when the client has successfully sent data to the server.
            </summary>
        </member>
        <member name="E:TVA.Communication.ClientBase.SendDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when sending data to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ClientBase.ReceiveData">
            <summary>
            Occurs when unprocessed data has been received from the server.
            </summary>
            <remarks>
            <para>
            This event can be used to receive a notification that server data has arrived. The <see cref="M:TVA.Communication.ClientBase.Read(System.Byte[],System.Int32,System.Int32)"/> method can then be used
            to copy data to an existing buffer. In many cases it will be optimal to use an existing buffer instead of subscribing to the
            <see cref="E:TVA.Communication.ClientBase.ReceiveDataComplete"/> event.
            </para>
            <para>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the number of bytes received in the buffer from the server.
            </para>
            </remarks>
        </member>
        <member name="E:TVA.Communication.ClientBase.ReceiveDataComplete">
            <summary>
            Occurs when data received from the server has been processed and is ready for consumption.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is a new buffer containing post-processed data received from the server starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of post-processed bytes received in the buffer from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ClientBase.ReceiveDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when receiving data from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ClientBase.UnhandledUserException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered in a user-defined function via an event dispatch.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> thrown by the user-defined function.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.ServerUri">
            <summary>
            Gets the server URI.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.ConnectionString">
            <summary>
            Gets or sets the data required by the client to connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.MaxConnectionAttempts">
            <summary>
            Gets or sets the maximum number of times the client will attempt to connect to the server.
            </summary>
            <remarks>Set <see cref="P:TVA.Communication.ClientBase.MaxConnectionAttempts"/> to -1 for infinite connection attempts.</remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.SendBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for sending data to the server.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.PersistSettings">
            <summary>
            Gets or sets a boolean value that indicates whether the client settings are to be saved to the config file.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.SettingsCategory">
            <summary>
            Gets or sets the category under which the client settings are to be saved to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is a null or empty string.</exception>
        </member>
        <member name="P:TVA.Communication.ClientBase.Enabled">
            <summary>
            Gets or sets a boolean value that indicates whether the client is currently enabled.
            </summary>
            <remarks>
            Setting <see cref="P:TVA.Communication.ClientBase.Enabled"/> to true will start connection cycle for the client if it
            is not connected, setting to false will disconnect the client if it is connected.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ClientBase.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ClientState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.ClientBase.TransportProtocol"/> used by the client for the transportation of data with the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.ConnectionTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the client has been connected to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.ReadIndex">
            <summary>
            Gets or sets current read index for received data buffer incremented at each <see cref="M:TVA.Communication.ClientBase.Read(System.Byte[],System.Int32,System.Int32)"/> call.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.Name">
            <summary>
            Gets the unique identifier of the client.
            </summary>
        </member>
        <member name="P:TVA.Communication.ClientBase.Status">
            <summary>
            Gets the descriptive status of the client.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultPayloadAware">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpClient.PayloadAware"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultIntegratedSecurity">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpClient.IntegratedSecurity"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultAllowDualStackSocket">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpClient.AllowDualStackSocket"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultMaxSendQueueSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpClient.MaxSendQueueSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.TcpClient"/>. See <see cref="F:TVA.Communication.TcpClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.TcpClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event handler. Calling this method outside
            this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">No received data buffer has been defined to read.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.TcpClient.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpClient"/> settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpClient"/> settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.TcpClient"/> from the connected server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.TcpClient"/> to the server asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.TcpClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.TcpClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:TVA.Communication.TcpClient"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">Server property is missing.</exception>
            <exception cref="T:System.FormatException">Server property is invalid.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Server port value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.TcpClient.OnSendDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.OnReceiveDataException(System.Net.Sockets.SocketException)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.OnReceiveDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.TcpClient.ProcessConnect">
            <summary>
            Callback method for asynchronous connect operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.SendPayload(TVA.Communication.TcpClient.TcpClientPayload)">
            <summary>
            Sends a payload on the socket.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ProcessSend">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadAsync">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadAwareAsync">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ProcessReceivePayloadAware">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ReceivePayloadUnawareAsync">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.ProcessReceivePayloadUnaware">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpClient.TerminateConnection">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.PayloadAware">
            <summary>
            Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.PayloadMarker">
            <summary>
            Gets or sets the byte sequence used to mark the beginning of a payload in a <see cref="P:TVA.Communication.TcpClient.PayloadAware"/> transmission.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or empty buffer.</exception>
        </member>
        <member name="P:TVA.Communication.TcpClient.IntegratedSecurity">
            <summary>
            Gets or sets a boolean value that indicates whether the current Windows account credentials are used for authentication.
            </summary>
            <remarks>   
            This option is ignored under Mono deployments.
            </remarks>
        </member>
        <member name="P:TVA.Communication.TcpClient.AllowDualStackSocket">
            <summary>
            Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.MaxSendQueueSize">
            <summary>
            Gets or sets the maximum size for the send queue before payloads are dumped from the queue.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.TcpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.TcpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.ReceiveHandler">
            <summary>
            Gets the receive handler for receiving data on the socket.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.NetworkCredential">
            <summary>
            Gets or sets network credential that is used when
            <see cref="P:TVA.Communication.TcpClient.IntegratedSecurity"/> is set to <c>true</c>.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpClient.Status">
            <summary>
            Gets the descriptive status of the client.
            </summary>
        </member>
        <member name="T:TVA.Communication.SerialClient">
            <summary>
            Represents a communication client based on <see cref="T:System.IO.Ports.SerialPort"/>.
            </summary>
            <example>
            This example shows how to use <see cref="T:TVA.Communication.SerialClient"/> for communicating with <see cref="T:System.IO.Ports.SerialPort"/>:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            
            class Program
            {
                static SerialClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new SerialClient("Port=COM1; BaudRate=9600; Parity=None; StopBits=One; DataBits=8; DtrEnable=False; RtsEnable=False");
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.SendDataComplete += s_client_SendDataComplete;
                    s_client.ReceiveDataComplete += s_client_ReceiveDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Write user input to the serial port.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        s_client.Send(input);
                    }
            
                    // Disconnect the client on shutdown.
                    s_client.Dispose();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to serial port.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to serial port.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from serial port.");
                }
            
                static void s_client_SendDataComplete(object sender, EventArgs e)
                {
                    Console.WriteLine(string.Format("Sent data - {0}", s_client.TextEncoding.GetString(s_client.Client.SendBuffer)));
                }
            
                static void s_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}", s_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.SerialClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SerialClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SerialClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.SerialClient"/>. See <see cref="F:TVA.Communication.SerialClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.SerialClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SerialClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.SerialClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.SerialClient.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event handler. Calling this method outside
            this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">No received data buffer has been defined to read.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.SerialClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.SerialClient"/> from the <see cref="T:System.IO.Ports.SerialPort"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.SerialClient"/> to the <see cref="T:System.IO.Ports.SerialPort"/> asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.SerialClient"/> when it is connected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SerialClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:TVA.Communication.SerialClient"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.SerialClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentException">BaudRate property is missing.</exception>
            <exception cref="T:System.ArgumentException">Parity property is missing.</exception>
            <exception cref="T:System.ArgumentException">StopBits property is missing.</exception>
            <exception cref="T:System.ArgumentException">DataBits property is missing.</exception>
        </member>
        <member name="M:TVA.Communication.SerialClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends (writes) data to the <see cref="T:System.IO.Ports.SerialPort"/> asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent (written).</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending (writing) data.</param>
            <param name="length">The number of bytes to be sent (written) from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SerialClient.SendDataAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.OpenPort">
            <summary>
            Connects to the <see cref="T:System.IO.Ports.SerialPort"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.SerialPort_DataReceived(System.Object,System.IO.Ports.SerialDataReceivedEventArgs)">
            <summary>
            Receive (read) data from the <see cref="T:System.IO.Ports.SerialPort"/> (.NET serial port class raises this event when data is available).
            </summary>
        </member>
        <member name="M:TVA.Communication.SerialClient.SerialPort_ErrorReceived(System.Object,System.IO.Ports.SerialErrorReceivedEventArgs)">
            <summary>
            Receive (read) error data from the <see cref="T:System.IO.Ports.SerialPort"/> (.NET serial port class raises this event when error occurs).
            </summary>
        </member>
        <member name="P:TVA.Communication.SerialClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.SerialClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SerialClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.SerialClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SerialClient.ReceivedBytesThreshold">
            <summary>
            Gets or sets the needed number of bytes in the internal input buffer before a <see cref="M:TVA.Communication.ClientBase.OnReceiveDataComplete(System.Byte[],System.Int32)"/> event occurs.
            </summary>
            <remarks>
            This option is ignored under Mono deployments.
            </remarks>
        </member>
        <member name="T:TVA.Communication.NamespaceDoc">
            <summary>
            Contains high-level classes and components related to any data communications including sockets, serial and file based transports used to simplify and standardize data access.
            </summary>
        </member>
        <member name="T:TVA.Communication.ClientIdentificationMode">
            <summary>
            Defines modes by which the UDP server will identify its clients when receiving messages.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientIdentificationMode.IP">
            <summary>
            Identify clients by their IP address.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientIdentificationMode.Port">
            <summary>
            Identify clients by the port they are bound to.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientIdentificationMode.EndPoint">
            <summary>
            Identify clients by both their IP address and the port they are bound to.
            </summary>
        </member>
        <member name="T:TVA.Communication.UdpServer">
            <summary>
            Represents a UDP-based communication server.
            </summary>
            <remarks>
            <para>
            Use <see cref="T:TVA.Communication.UdpServer"/> when the primary purpose is to transmit data.
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpServer.Server"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> (Example: "Port=8888; Clients=localhost:8989; Interface=127.0.0.1")
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpServer.Server"/> socket can be used just for transmitting data without being bound to a local interface 
            by specifying -1 for the port number in the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> (Example: "Port=-1; Clients=localhost:8989")
            </para>
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.UdpServer"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static UdpServer m_server;
            
                static void Main(string[] args)
                {
                    // Initialize the server.
                    m_server = new UdpServer("Port=8888; Clients=localhost:8989");
                    m_server.Handshake = false;
                    m_server.ReceiveTimeout = -1;
                    m_server.Encryption = CipherStrength.None;
                    m_server.Compression = CompressionStrength.NoCompression;
                    m_server.SecureSession = false;
                    m_server.Initialize();
                    // Register event handlers.
                    m_server.ServerStarted += m_server_ServerStarted;
                    m_server.ServerStopped += m_server_ServerStopped;
                    m_server.ClientConnected += m_server_ClientConnected;
                    m_server.ClientDisconnected += m_server_ClientDisconnected;
                    m_server.ReceiveClientDataComplete += m_server_ReceiveClientDataComplete;
                    // Start the server.
                    m_server.Start();
            
                    // Multicast user input to all connected clients.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_server.Multicast(input);
                    }
            
                    // Stop the server on shutdown.
                    m_server.Stop();
                }
            
                static void m_server_ServerStarted(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been started!");
                }
            
                static void m_server_ServerStopped(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been stopped!");
                }
            
                static void m_server_ClientConnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client connected - {0}.", e.Argument));
                }
            
                static void m_server_ClientDisconnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client disconnected - {0}.", e.Argument));
                }
            
                static void m_server_ReceiveClientDataComplete(object sender, EventArgs&lt;Guid, byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data from {0} - {1}.", e.Argument1, m_server.TextEncoding.GetString(e.Argument2, 0, e.Argument3)));
                }
            }
            </code>
            </example>
        </member>
        <member name="T:TVA.Communication.ServerBase">
            <summary>
            Base class for a server involved in server-client communication.
            </summary>
        </member>
        <member name="T:TVA.Communication.IServer">
            <summary>
            Defines a server involved in server-client communication.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.Start">
            <summary>
            Starts the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.Stop">
            <summary>
            Stops the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.DisconnectAll">
            <summary>
            Disconnects all of the connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.IServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects a connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
        </member>
        <member name="M:TVA.Communication.IServer.SendTo(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.IServer.Multicast(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.IServer.SendToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.IServer.MulticastAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.IServer.Read(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="clientID">ID of the client from which data buffer should be read.</param>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.IServer.ReceiveClientData"/> event handler. Calling this method outside this
            event will have unexpected results.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ServerStarted">
            <summary>
            Occurs when the server is started.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.ServerStopped">
            <summary>
            Occurs when the server is stopped.
            </summary>
        </member>
        <member name="E:TVA.Communication.IServer.ClientConnected">
            <summary>
            Occurs when a client connects to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that connected to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ClientDisconnected">
            <summary>
            Occurs when a client disconnects from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that disconnected from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ClientConnectingException">
            <summary>
            Occurs when an exception is encountered while a client is connecting.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when connecting to the client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.SendClientDataStart">
            <summary>
            Occurs when data is being sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data is being sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.SendClientDataComplete">
            <summary>
            Occurs when data has been sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data has been sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.SendClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client to which the data was being sent.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when sending data to a client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ReceiveClientData">
            <summary>
            Occurs when unprocessed data has been received from a client.
            </summary>
            <remarks>
            <para>
            This event can be used to receive a notification that client data has arrived. The <see cref="M:TVA.Communication.IServer.Read(System.Guid,System.Byte[],System.Int32,System.Int32)"/> method can then be used
            to copy data to an existing buffer. In many cases it will be optimal to use an existing buffer instead of subscribing to the
            <see cref="E:TVA.Communication.IServer.ReceiveClientDataComplete"/> event, however, the data that is available after calling the <see cref="M:TVA.Communication.IServer.Read(System.Guid,System.Byte[],System.Int32,System.Int32)"/> method
            will be the original unprocessed data received by the client, i.e., not optionally decrypted or decompressed data.
            </para>
            <para>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client from which data is received.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of bytes received in the buffer from the client.
            </para>
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ReceiveClientDataComplete">
            <summary>
            Occurs when data received from a client has been processed and is ready for consumption.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`3.Argument1"/> is the ID of the client from which data is received.<br/>
            <see cref="F:TVA.EventArgs`3.Argument2"/> is a new buffer containing post-processed data received from the client starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`3.Argument3"/> is the number of post-processed bytes received in the buffer from the client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.ReceiveClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client from which the data was being received.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when receiving data from a client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.IServer.UnhandledUserException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered in a user-defined function via an event dispatch.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> thrown by the user-defined function.
            </remarks>
        </member>
        <member name="P:TVA.Communication.IServer.ConfigurationString">
            <summary>
            Gets or sets the data required by the server to initialize.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.MaxClientConnections">
            <summary>
            Gets or sets the maximum number of clients that can connect to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.SendBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the server for receiving data from the clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the connected clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ServerState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.IServer.TransportProtocol"/> used by the server for the transportation of data with the clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ServerID">
            <summary>
            Gets the server's ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.ClientIDs">
            <summary>
            Gets the IDs of clients connected to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.IServer.RunTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the server has been running.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultMaxClientConnections">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.MaxClientConnections"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultSendBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.SendBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultPersistSettings">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerBase.DefaultSettingsCategory">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.SettingsCategory"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.#ctor">
            <summary>
            Initializes a new instance of the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.#ctor(TVA.Communication.TransportProtocol,System.String)">
            <summary>
            Initializes a new instance of the server.
            </summary>
            <param name="transportProtocol">One of the <see cref="P:TVA.Communication.ServerBase.TransportProtocol"/> values.</param>
            <param name="configurationString">The data used by the server for initialization.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Start">
            <summary>
            When overridden in a derived class, starts the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.Stop">
            <summary>
            When overridden in a derived class, stops the server.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.Read(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="clientID">ID of the client from which data buffer should be read.</param>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ServerBase.ReceiveClientData"/> event handler. Calling this method outside this event
            will have unexpected results.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.DisconnectOne(System.Guid)">
            <summary>
            When overridden in a derived class, disconnects a connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.ValidateConfigurationString(System.String)">
            <summary>
            When overridden in a derived class, validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">The configuration string to be validated.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.Initialize">
            <summary>
            Initializes the server.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ServerBase.Initialize"/> is to be called by user-code directly only if the server is not consumed through the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.BeginInit">
            <summary>
            Performs necessary operations before the server properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ServerBase.BeginInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through 
            the designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.EndInit">
            <summary>
            Performs necessary operations after the server properties are initialized.
            </summary>
            <remarks>
            <see cref="M:TVA.Communication.ServerBase.EndInit"/> should never be called by user-code directly. This method exists solely for use by the designer if the server is consumed through the 
            designer surface of the IDE.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.SaveSettings">
            <summary>
            Saves server settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ServerBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ServerBase.LoadSettings">
            <summary>
            Loads saved server settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><see cref="P:TVA.Communication.ServerBase.SettingsCategory"/> has a value of null or empty string.</exception>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.String)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The plain-text data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.Object)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="serializableObject">The serializable object that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.Byte[])">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The binary data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendTo(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client synchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.String)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.Object)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.Byte[])">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Multicast(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients synchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.DisconnectAll">
            <summary>
            Disconnects all of the connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.String)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The plain-text data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.Object)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="serializableObject">The serializable object that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.Byte[])">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The binary data that is to be sent.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.SendToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.String)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The plain-text data that is to be sent.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.Object)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="serializableObject">The serializable object that is to be sent.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.Byte[])">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The binary data that is to be sent.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.MulticastAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to all of the connected clients asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns>Array of <see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnServerStarted">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ServerStarted"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnServerStopped">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ServerStopped"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnClientConnected(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ClientConnected"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ClientConnected"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnClientDisconnected(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ClientDisconnected"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ClientDisconnected"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnClientConnectingException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ClientConnectingException"/> event.
            </summary>
            <param name="ex">The <see cref="T:System.Exception"/> encountered when connecting to the client.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnSendClientDataStart(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataStart"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataStart"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnSendClientDataComplete(System.Guid)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataComplete"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataComplete"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnSendClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnReceiveClientData(System.Guid,System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientData"/> event.
            </summary>
            <param name="clientID">ID of the client from which data is received.</param>
            <param name="size">Number of bytes received from the client.</param>
            <remarks>
            This event is automatically raised by call to <see cref="M:TVA.Communication.ServerBase.OnReceiveClientDataComplete(System.Guid,System.Byte[],System.Int32)"/> so that inheritors
            never need to worry about raising this event. This method is only included here in case any custom server
            implementations need to explicitly raise this event.
            </remarks>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnReceiveClientDataComplete(System.Guid,System.Byte[],System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataComplete"/> event.
            </summary>
            <param name="clientID">ID of the client from which data is received.</param>
            <param name="data">Data received from the client.</param>
            <param name="size">Number of bytes received from the client.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnReceiveClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.OnUnhandledUserException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.UnhandledUserException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.UnhandledUserException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the server and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.ServerBase.ReStart">
            <summary>
            Re-starts the server if currently running.
            </summary>
        </member>
        <member name="M:TVA.Communication.ServerBase.Create(System.String)">
            <summary>
            Create a communications server
            </summary>
            <remarks>
            Note that typical configuration string should be prefixed with a "protocol=tcp" or a "protocol=udp"
            </remarks>
            <param name="configurationString">The configuration string for the server.</param>
            <returns>A communications server.</returns>
        </member>
        <member name="E:TVA.Communication.ServerBase.ServerStarted">
            <summary>
            Occurs when the server is started.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.ServerStopped">
            <summary>
            Occurs when the server is stopped.
            </summary>
        </member>
        <member name="E:TVA.Communication.ServerBase.ClientConnected">
            <summary>
            Occurs when a client connects to the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that connected to the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ClientDisconnected">
            <summary>
            Occurs when a client disconnects from the server.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client that disconnected from the server.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ClientConnectingException">
            <summary>
            Occurs when an exception is encountered while a client is connecting.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> encountered when connecting to the client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.SendClientDataStart">
            <summary>
            Occurs when data is being sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data is being sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.SendClientDataComplete">
            <summary>
            Occurs when data has been sent to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the ID of the client to which the data has been sent.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.SendClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when sending data to a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client to which the data was being sent.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when sending data to a client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ReceiveClientData">
            <summary>
            Occurs when unprocessed data has been received from a client.
            </summary>
            <remarks>
            <para>
            This event can be used to receive a notification that client data has arrived. The <see cref="M:TVA.Communication.ServerBase.Read(System.Guid,System.Byte[],System.Int32,System.Int32)"/> method can then be used
            to copy data to an existing buffer. In many cases it will be optimal to use an existing buffer instead of subscribing to the
            <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataComplete"/> event, however, the data that is available after calling the <see cref="M:TVA.Communication.ServerBase.Read(System.Guid,System.Byte[],System.Int32,System.Int32)"/> method
            will be the original unprocessed data received by the client, i.e., not optionally decrypted or decompressed data.
            </para>
            <para>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client from which data is received.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of bytes received in the buffer from the client.
            </para>
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ReceiveClientDataComplete">
            <summary>
            Occurs when data received from a client has been processed and is ready for consumption.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`3.Argument1"/> is the ID of the client from which data is received.<br/>
            <see cref="F:TVA.EventArgs`3.Argument2"/> is a new buffer containing post-processed data received from the client starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`3.Argument3"/> is the number of post-processed bytes received in the buffer from the client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.ReceiveClientDataException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered when receiving data from a client.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the ID of the client from which the data was being received.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the <see cref="T:System.Exception"/> encountered when receiving data from a client.
            </remarks>
        </member>
        <member name="E:TVA.Communication.ServerBase.UnhandledUserException">
            <summary>
            Occurs when an <see cref="T:System.Exception"/> is encountered in a user-defined function via an event dispatch.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`1.Argument"/> is the <see cref="T:System.Exception"/> thrown by the user-defined function.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.ConfigurationString">
            <summary>
            Gets or sets the data required by the server to initialize.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.MaxClientConnections">
            <summary>
            Gets or sets the maximum number of clients that can connect to the server.
            </summary>
            <remarks>
            Set <see cref="P:TVA.Communication.ServerBase.MaxClientConnections"/> to -1 to allow infinite client connections.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.SendBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the server for sending data to the clients.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the server for receiving data from the clients.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.PersistSettings">
            <summary>
            Gets or sets a boolean value that indicates whether the server settings are to be saved to the config file.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.SettingsCategory">
            <summary>
            Gets or sets the category under which the server settings are to be saved to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is a null or empty string.</exception>
        </member>
        <member name="P:TVA.Communication.ServerBase.Enabled">
            <summary>
            Gets or sets a boolean value that indicates whether the server is currently enabled.
            </summary>
            <remarks>
            Setting <see cref="P:TVA.Communication.ServerBase.Enabled"/> to true will start the server if it is not running, setting
            to false will stop the server if it is running.
            </remarks>
        </member>
        <member name="P:TVA.Communication.ServerBase.TextEncoding">
            <summary>
            Gets or sets the <see cref="T:System.Text.Encoding"/> to be used for the text sent to the connected clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.CurrentState">
            <summary>
            Gets the current <see cref="T:TVA.Communication.ServerState"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.TransportProtocol">
            <summary>
            Gets the <see cref="P:TVA.Communication.ServerBase.TransportProtocol"/> used by the server for the transportation of data with the clients.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.ServerID">
            <summary>
            Gets the server's ID.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.ClientIDs">
            <summary>
            Gets the IDs of clients connected to the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.RunTime">
            <summary>
            Gets the <see cref="T:TVA.Units.Time"/> for which the server has been running.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.ReadIndicies">
            <summary>
            Gets current read indicies for received data buffers incremented at each <see cref="M:TVA.Communication.ServerBase.Read(System.Guid,System.Byte[],System.Int32,System.Int32)"/> call.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.Name">
            <summary>
            Gets the unique identifier of the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.Status">
            <summary>
            Gets the descriptive status of the server.
            </summary>
        </member>
        <member name="P:TVA.Communication.ServerBase.Initialized">
            <summary>
            Gets a boolean value that indicates
            whether the server has been initialized.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultClientIdentificationMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpServer.ClientIdentificationMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultAllowDualStackSocket">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpServer.AllowDualStackSocket"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultDynamicClientEndPoints">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpServer.DynamicClientEndPoints"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultMaxSendQueueSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpServer.MaxSendQueueSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.DefaultConfigurationString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpServer.SIO_UDP_CONNRESET">
            <summary>
            Specifies the constant to be used for disabling <see cref="F:System.Net.Sockets.SocketError.ConnectionReset"/> when endpoint is not listening.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpServer"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpServer"/> class.
            </summary>
            <param name="configString">Config string of the <see cref="T:TVA.Communication.UdpServer"/>. See <see cref="F:TVA.Communication.UdpServer.DefaultConfigurationString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.UdpServer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpServer"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.UdpServer"/>.</param>
        </member>
        <member name="M:TVA.Communication.UdpServer.Read(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="clientID">ID of the client from which data buffer should be read.</param>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ServerBase.ReceiveClientData"/> event handler. Calling this method
            outside this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            No received data buffer has been defined to read -or-
            Specified <paramref name="clientID"/> does not exist, cannot read buffer.
            </exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpServer"/> settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpServer"/> settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.Stop">
            <summary>
            Stops the <see cref="T:TVA.Communication.UdpServer"/> synchronously and disconnects all connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.Start">
            <summary>
            Starts the <see cref="T:TVA.Communication.UdpServer"/> synchronously and begins accepting client connections asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to <see cref="M:TVA.Communication.UdpServer.Start"/> the <see cref="T:TVA.Communication.UdpServer"/> when it is running.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects the specified connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.TryGetClient(System.Guid,TVA.Communication.TransportProvider{System.Net.EndPoint}@)">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object associated with the specified client ID.
            </summary>
            <param name="clientID">ID of the client.</param>
            <param name="udpClient">The UDP client.</param>
            <returns>An <see cref="T:TVA.Communication.TransportProvider`1"/> object.</returns>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.ValidateConfigurationString(System.String)">
            <summary>
            Validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">Configuration string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpServer.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpServer.OnSendClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.UdpServer.OnReceiveClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.UdpServer.SendPayload(TVA.Communication.UdpServer.UdpServerPayload)">
            <summary>
            Loops waiting for payloads and sends them on the socket.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ProcessSend(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ReceivePayloadAsync(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Initiate method for asynchronous receive operation of payload data from any endpoint.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpServer.ProcessReceive(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Callback method for asynchronous receive operation of payload data from any endpoint.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.ClientIdentificationMode">
            <summary>
            Gets or sets the mode by which the UDP server will identify its clients when receiving messages.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.AllowDualStackSocket">
            <summary>
            Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.DynamicClientEndPoints">
            <summary>
            Gets or sets a boolean value that determines if UDP server should always
            send responses to clients on the port that data is received from the client.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.MaxSendQueueSize">
            <summary>
            Gets or sets the maximum size for the send queue before payloads are dumped from the queue.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.Server">
            <summary>
            Gets the <see cref="T:System.Net.Sockets.Socket"/> object for the <see cref="T:TVA.Communication.UdpServer"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpServer.Status">
            <summary>
            Gets the descriptive status of the client.
            </summary>
        </member>
        <member name="T:TVA.Communication.TcpServer">
            <summary>
            Represents a TCP-based communication server.
            </summary>
            <remarks>
            The <see cref="P:TVA.Communication.TcpServer.Server"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> (Example: "Port=8888; Interface=127.0.0.1")
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.TcpServer"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static TcpServer m_server;
            
                static void Main(string[] args)
                {
                    // Initialize the server.
                    m_server = new TcpServer("Port=8888");
                    m_server.Handshake = false;
                    m_server.PayloadAware = false;
                    m_server.ReceiveTimeout = -1;
                    m_server.Encryption = CipherStrength.None;
                    m_server.Compression = CompressionStrength.NoCompression;
                    m_server.SecureSession = false;
                    m_server.Initialize();
                    // Register event handlers.
                    m_server.ServerStarted += m_server_ServerStarted;
                    m_server.ServerStopped += m_server_ServerStopped;
                    m_server.ClientConnected += m_server_ClientConnected;
                    m_server.ClientDisconnected += m_server_ClientDisconnected;
                    m_server.ReceiveClientDataComplete += m_server_ReceiveClientDataComplete;
                    // Start the server.
                    m_server.Start();
            
                    // Multicast user input to all connected clients.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        m_server.Multicast(input);
                    }
            
                    // Stop the server on shutdown.
                    m_server.Stop();
                }
            
                static void m_server_ServerStarted(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been started!");
                }
            
                static void m_server_ServerStopped(object sender, EventArgs e)
                {
                    Console.WriteLine("Server has been stopped!");
                }
            
                static void m_server_ClientConnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client connected - {0}.", e.Argument));
                }
            
                static void m_server_ClientDisconnected(object sender, EventArgs&lt;Guid&gt; e)
                {
                    Console.WriteLine(string.Format("Client disconnected - {0}.", e.Argument));
                }
            
                static void m_server_ReceiveClientDataComplete(object sender, EventArgs&lt;Guid, byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data from {0} - {1}.", e.Argument1, m_server.TextEncoding.GetString(e.Argument2, 0, e.Argument3)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultPayloadAware">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpServer.PayloadAware"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultIntegratedSecurity">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpServer.IntegratedSecurity"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultAllowDualStackSocket">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpServer.AllowDualStackSocket"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultMaxSendQueueSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.TcpServer.MaxSendQueueSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.TcpServer.DefaultConfigurationString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
            <param name="configString">Config string of the <see cref="T:TVA.Communication.TcpServer"/>. See <see cref="F:TVA.Communication.TcpServer.DefaultConfigurationString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.TcpServer"/>.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.Read(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="clientID">ID of the client from which data buffer should be read.</param>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ServerBase.ReceiveClientData"/> event handler. Calling this method
            outside this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            No received data buffer has been defined to read -or-
            Specified <paramref name="clientID"/> does not exist, cannot read buffer.
            </exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpServer"/> settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpServer"/> settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.Stop">
            <summary>
            Stops the <see cref="T:TVA.Communication.TcpServer"/> synchronously and disconnects all connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.Start">
            <summary>
            Starts the <see cref="T:TVA.Communication.TcpServer"/> synchronously and begins accepting client connections asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to <see cref="M:TVA.Communication.TcpServer.Start"/> the <see cref="T:TVA.Communication.TcpServer"/> when it is running.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects the specified connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.TryGetClient(System.Guid,TVA.Communication.TransportProvider{System.Net.Sockets.Socket}@)">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object associated with the specified client ID.
            </summary>
            <param name="clientID">ID of the client.</param>
            <param name="tcpClient">The TCP client.</param>
            <returns>A <see cref="T:TVA.Communication.TransportProvider`1"/> object.</returns>
        </member>
        <member name="M:TVA.Communication.TcpServer.TryGetClientPrincipal(System.Guid,System.Security.Principal.WindowsPrincipal@)">
            <summary>
            Gets the <see cref="T:System.Security.Principal.WindowsPrincipal"/> object associated with the specified client ID.
            </summary>
            <param name="clientID">ID of the client.</param>
            <param name="clientPrincipal">The principal of the client.</param>
            <returns>A <see cref="T:System.Security.Principal.WindowsPrincipal"/> object.</returns>
        </member>
        <member name="M:TVA.Communication.TcpServer.ValidateConfigurationString(System.String)">
            <summary>
            Validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">Configuration string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.TcpServer.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.TcpServer.OnSendClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.SendClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.OnReceiveClientDataException(System.Guid,System.Net.Sockets.SocketException)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.OnReceiveClientDataException(System.Guid,System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.
            </summary>
            <param name="clientID">ID of client to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ServerBase.ReceiveClientDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.TcpServer.ProcessAccept">
            <summary>
            Callback method for asynchronous accept operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.SendPayload(TVA.Communication.TcpServer.TcpServerPayload)">
            <summary>
            Asynchronous loop sends payloads on the socket.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ProcessSend(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadAwareAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ProcessReceivePayloadAware(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ReceivePayloadUnawareAsync(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.ProcessReceivePayloadUnaware(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.TerminateConnection(TVA.Communication.TransportProvider{System.Net.Sockets.Socket},System.Net.Sockets.SocketAsyncEventArgs,System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="M:TVA.Communication.TcpServer.DisposeReceiveArgs(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Returns the <see cref="T:System.Net.Sockets.SocketAsyncEventArgs"/> used for receiving data on the socket.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.PayloadAware">
            <summary>
            Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.PayloadMarker">
            <summary>
            Gets or sets the byte sequence used to mark the beginning of a payload in a <see cref="P:TVA.Communication.TcpServer.PayloadAware"/> transmission.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or empty buffer.</exception>
        </member>
        <member name="P:TVA.Communication.TcpServer.IntegratedSecurity">
            <summary>
            Gets or sets a boolean value that indicates whether the client Windows account credentials are used for authentication.
            </summary>
            <remarks>   
            This option is ignored under Mono deployments.
            </remarks>
        </member>
        <member name="P:TVA.Communication.TcpServer.AllowDualStackSocket">
            <summary>
            Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.MaxSendQueueSize">
            <summary>
            Gets or sets the maximum size for the send queue before payloads are dumped from the queue.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.Server">
            <summary>
            Gets the <see cref="T:System.Net.Sockets.Socket"/> object for the <see cref="T:TVA.Communication.TcpServer"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.ReceiveHandler">
            <summary>
            Gets the receive handler used to handle data received on the connected sockets.
            </summary>
        </member>
        <member name="P:TVA.Communication.TcpServer.Status">
            <summary>
            Gets the descriptive status of the client.
            </summary>
        </member>
        <member name="T:TVA.Communication.FileClient">
            <summary>
            Represents a communication client based on <see cref="T:System.IO.FileStream"/>.
            </summary>
            <example>
            This example shows how to use <see cref="T:TVA.Communication.FileClient"/> for writing data to a file:
            <code>
            using System;
            using TVA.Communication;
            
            class Program
            {
                static FileClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new FileClient(@"File=c:\File.txt");
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.SendDataComplete += s_client_SendDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Write user input to the file.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        s_client.Send(input + "\r\n");
                    }
            
                    // Disconnect the client on shutdown.
                    s_client.Dispose();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to file.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to file.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from file.");
                }
            
                static void s_client_SendDataComplete(object sender, EventArgs e)
                {
                    Console.WriteLine(string.Format("Sent data - {0}", s_client.TextEncoding.GetString(s_client.Client.SendBuffer)));
                }
            }
            </code>
            This example shows how to use <see cref="T:TVA.Communication.FileClient"/> for reading data to a file:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            
            class Program
            {
                static FileClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new FileClient(@"File=c:\File.txt");
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.ReceiveDataComplete += s_client_ReceiveDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Wait for client to read data.
                    Console.ReadLine();
            
                    // Disconnect the client on shutdown.
                    s_client.Dispose();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to file.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to file.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from file.");
                }
            
                static void s_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}", s_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultAutoRepeat">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.AutoRepeat"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultReceiveOnDemand">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.ReceiveOnDemand"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultReceiveInterval">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.ReceiveInterval"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultStartingOffset">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.StartingOffset"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultFileOpenMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.FileOpenMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultFileShareMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.FileShareMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultFileAccessMode">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.FileClient.FileAccessMode"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.FileClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.FileClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.FileClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.FileClient"/>. See <see cref="F:TVA.Communication.FileClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.FileClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.FileClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.FileClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.FileClient.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event handler. Calling this method outside
            this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">No received data buffer has been defined to read.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.FileClient.ReadNextBuffer">
            <summary>
            Reads next data buffer from the <see cref="T:System.IO.FileStream"/>.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="M:TVA.Communication.FileClient.ReadNextBuffer"/> is called when <see cref="T:TVA.Communication.FileClient"/> is not connected.</exception>
            <exception cref="T:System.InvalidOperationException"><see cref="M:TVA.Communication.FileClient.ReadNextBuffer"/> is called when <see cref="P:TVA.Communication.FileClient.ReceiveOnDemand"/> is disabled.</exception>
        </member>
        <member name="M:TVA.Communication.FileClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.FileClient"/> from the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.FileClient"/> to the <see cref="T:System.IO.FileStream"/> asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.FileClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.FileClient.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.FileClient"/> settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.FileClient"/> settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:TVA.Communication.FileClient"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.FileClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">File property is missing.</exception>
        </member>
        <member name="M:TVA.Communication.FileClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends (writes) data to the file asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent (written).</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending (writing) data.</param>
            <param name="length">The number of bytes to be sent (written) from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.FileClient.SendDataAsyncCallback(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.OpenFile">
            <summary>
            Connects to the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.FileClient.ReadData">
            <summary>
            Receive (reads) data from the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.AutoRepeat">
            <summary>
            Gets or sets a boolean value that indicates whether receiving (reading) of data is to be repeated endlessly.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.FileClient.AutoRepeat"/> is enabled when <see cref="P:TVA.Communication.FileClient.FileAccessMode"/> is <see cref="F:System.IO.FileAccess.ReadWrite"/></exception>
        </member>
        <member name="P:TVA.Communication.FileClient.ReceiveOnDemand">
            <summary>
            Gets or sets a boolean value that indicates whether receiving (reading) of data will be initiated manually by calling <see cref="M:TVA.Communication.FileClient.ReadNextBuffer"/>.
            </summary>
            <remarks>
            <see cref="P:TVA.Communication.FileClient.ReceiveInterval"/> will be set to -1 when <see cref="P:TVA.Communication.FileClient.ReceiveOnDemand"/> is enabled.
            </remarks>
        </member>
        <member name="P:TVA.Communication.FileClient.ReceiveInterval">
            <summary>
            Gets or sets the number of milliseconds to pause before receiving (reading) the next available set of data.
            </summary>
            <remarks>
            Set <see cref="P:TVA.Communication.FileClient.ReceiveInterval"/> = -1 to receive (read) data continuously without pausing.
            </remarks>
        </member>
        <member name="P:TVA.Communication.FileClient.StartingOffset">
            <summary>
            Gets or sets the starting point relative to the beginning of the file from where the data is to be received (read).
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is not a positive number.</exception>
        </member>
        <member name="P:TVA.Communication.FileClient.FileOpenMode">
            <summary>
            Gets or sets the <see cref="T:System.IO.FileMode"/> value to be used when opening the file.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.FileShareMode">
            <summary>
            Gets or set the <see cref="T:System.IO.FileShare"/> value to be used when opening the file.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.FileAccessMode">
            <summary>
            Gets or sets the <see cref="T:System.IO.FileAccess"/> value to be used when opening the file.
            </summary>
            <exception cref="T:System.InvalidOperationException"><see cref="P:TVA.Communication.FileClient.FileAccessMode"/> is set to <see cref="F:System.IO.FileAccess.ReadWrite"/> when <see cref="P:TVA.Communication.FileClient.AutoRepeat"/> is enabled.</exception>
        </member>
        <member name="P:TVA.Communication.FileClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.FileClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.FileClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.FileClient"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.TransportProtocol">
            <summary>
            Indicates the protocol used in server-client communication.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.Tcp">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is Transmission Control Protocol.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.Udp">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is User Datagram Protocol.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.Serial">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is serial interface.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProtocol.File">
            <summary>
            <see cref="T:TVA.Communication.TransportProtocol"/> is file-system based.
            </summary>
        </member>
        <member name="T:TVA.Communication.SslClient">
            <summary>
            Represents a TCP-based communication client with SSL authentication and encryption.
            </summary>
            <seealso cref="T:TVA.Communication.TcpClient"/>
        </member>
        <member name="F:TVA.Communication.SslClient.DefaultPayloadAware">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.SslClient.PayloadAware"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.SslClient.DefaultAllowDualStackSocket">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.SslClient.AllowDualStackSocket"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.SslClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SslClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SslClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.TcpClient"/>. See <see cref="F:TVA.Communication.SslClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.SslClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.SslClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.TcpClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.SslClient.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event handler. Calling this method outside this event
            will have unexpected results.
            </remarks>
        </member>
        <member name="M:TVA.Communication.SslClient.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpClient"/> settings to the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpClient"/> settings from the config file if the <see cref="P:TVA.Communication.ClientBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.Disconnect">
            <summary>
            When overridden in a derived class, disconnects client from the server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.TcpClient"/> to the server asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.TcpClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SslClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:TVA.Communication.TcpClient"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.SslClient.ValidateConnectionString(System.String)">
            <summary>
            When overridden in a derived class, validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">The connection string to be validated.</param>
        </member>
        <member name="M:TVA.Communication.SslClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SslClient.OnReceiveDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.SslClient.OnConnectionTerminated">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionTerminated"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ProcessConnect(System.Net.Sockets.SocketAsyncEventArgs)">
            <summary>
            Callback method for asynchronous connect operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ProcessAuthenticate(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous authenticate operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ProcessSend(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ReceivePayloadAsync">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ReceivePayloadAwareAsync(System.Boolean)">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ProcessReceivePayloadAware(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ReceivePayloadUnawareAsync">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.ProcessReceivePayloadUnaware(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.TerminateConnection(System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslClient.DefaultLocalCertificateSelectionCallback(System.Object,System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,System.Security.Cryptography.X509Certificates.X509Certificate,System.String[])">
            <summary>
            Returns the certificate set by the user.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.PayloadAware">
            <summary>
            Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.PayloadMarker">
            <summary>
            Gets or sets the byte sequence used to mark the beginning of a payload in a <see cref="P:TVA.Communication.SslClient.PayloadAware"/> transmission.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or empty buffer.</exception>
        </member>
        <member name="P:TVA.Communication.SslClient.AllowDualStackSocket">
            <summary>
            Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.TcpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.SslClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.RemoteCertificateValidationCallback">
            <summary>
            Gets or sets the callback used to verify remote certificates.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.LocalCertificateSelectionCallback">
            <summary>
            Gets or sets the callback used to select a local certificate.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.ClientCertificates">
            <summary>
            Gets the collection of X509 certificates for this client.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.EnabledSslProtocols">
            <summary>
            Gets or sets a set of flags which determine the enabled <see cref="T:System.Security.Authentication.SslProtocols"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.CheckCertificateRevocation">
            <summary>
            Gets or sets a boolean value that determines whether the certificate revocation list is checked during authentication.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.CertificateFile">
            <summary>
            Gets or sets the path to the certificate used for authentication.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslClient.Certificate">
            <summary>
            Gets or sets the local certificate selected by the default <see cref="P:TVA.Communication.SslClient.LocalCertificateSelectionCallback"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.Radius.NamespaceDoc">
            <summary>
            Contains classes for RADIUS (Remote Authentication Dial In User Service) based server and client communication.
            </summary>
        </member>
        <member name="T:TVA.Communication.Payload">
            <summary>
            A helper class containing methods for manipulation of payload.
            </summary>
        </member>
        <member name="F:TVA.Communication.Payload.LengthSegment">
            <summary>
            Specifies the length of the segment in a "Payload-Aware" transmission that contains the payload length.
            </summary>
        </member>
        <member name="F:TVA.Communication.Payload.DefaultMarker">
            <summary>
            Default byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.
            </summary>
        </member>
        <member name="M:TVA.Communication.Payload.AddHeader(System.Byte[]@,System.Int32@,System.Int32@,System.Byte[])">
            <summary>
            Adds header containing the <paramref name="marker"/> to the payload in the <paramref name="buffer"/> for "Payload-Aware" transmission.
            </summary>
            <param name="buffer">The buffer containing the payload.</param>
            <param name="offset">The offset in the <paramref name="buffer"/> at which the payload starts.</param>
            <param name="length">The lenght of the payload in the <paramref name="buffer"/> starting at the <paramref name="offset"/>.</param>
            <param name="marker">The byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.</param>
        </member>
        <member name="M:TVA.Communication.Payload.HasHeader(System.Byte[],System.Byte[])">
            <summary>
            Determines whether or not the <paramref name="buffer"/> contains the header information of a "Payload-Aware" transmission.
            </summary>
            <param name="buffer">The buffer to be checked at index zero.</param>
            <param name="marker">The byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.</param>
            <returns>true if the buffer contains "Payload-Aware" transmission header; otherwise false.</returns>
        </member>
        <member name="M:TVA.Communication.Payload.ExtractLength(System.Byte[],System.Int32,System.Byte[])">
            <summary>
            Determines the length of a payload in a "Payload-Aware" transmission from the payload header information.
            </summary>
            <param name="buffer">The buffer containg payload header information starting at index zero.</param>
            <param name="length">The length of valid data within in <paramref name="buffer"/>.</param>
            <param name="marker">The byte sequence used to mark the beginning of the payload in a "Payload-Aware" transmissions.</param>
            <returns>Length of the payload.</returns>
        </member>
        <member name="T:TVA.Communication.SslServer">
            <summary>
            Represents a TCP-based communication server with SSL authentication and encryption.
            </summary>
        </member>
        <member name="F:TVA.Communication.SslServer.DefaultPayloadAware">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.SslServer.PayloadAware"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.SslServer.DefaultAllowDualStackSocket">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.SslServer.AllowDualStackSocket"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.SslServer.DefaultConfigurationString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ServerBase.ConfigurationString"/> property.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
            <param name="configString">Config string of the <see cref="T:TVA.Communication.TcpServer"/>. See <see cref="F:TVA.Communication.SslServer.DefaultConfigurationString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.SslServer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TcpServer"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.TcpServer"/>.</param>
        </member>
        <member name="M:TVA.Communication.SslServer.Read(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="clientID">ID of the client from which data buffer should be read.</param>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ServerBase.ReceiveClientData"/> event handler. Calling this method
            outside this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            No received data buffer has been defined to read -or-
            Specified <paramref name="clientID"/> does not exist, cannot read buffer.
            </exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.SslServer.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpServer"/> settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpServer"/> settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.Stop">
            <summary>
            Stops the <see cref="T:TVA.Communication.TcpServer"/> synchronously and disconnects all connected clients.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.Start">
            <summary>
            Starts the <see cref="T:TVA.Communication.TcpServer"/> synchronously and begins accepting client connections asynchronously.
            </summary>
            <exception cref="T:System.InvalidOperationException">Attempt is made to <see cref="M:TVA.Communication.SslServer.Start"/> the <see cref="T:TVA.Communication.TcpServer"/> when it is running.</exception>
        </member>
        <member name="M:TVA.Communication.SslServer.DisconnectOne(System.Guid)">
            <summary>
            Disconnects the specified connected client.
            </summary>
            <param name="clientID">ID of the client to be disconnected.</param>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.SslServer.Client(System.Guid)">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object associated with the specified client ID.
            </summary>
            <param name="clientID">ID of the client.</param>
            <returns>An <see cref="T:TVA.Communication.TransportProvider`1"/> object.</returns>
            <exception cref="T:System.InvalidOperationException">Client does not exist for the specified <paramref name="clientID"/>.</exception>
        </member>
        <member name="M:TVA.Communication.SslServer.ValidateConfigurationString(System.String)">
            <summary>
            Validates the specified <paramref name="configurationString"/>.
            </summary>
            <param name="configurationString">Configuration string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.SslServer.SendDataToAsync(System.Guid,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the specified client asynchronously.
            </summary>
            <param name="clientID">ID of the client to which the data is to be sent.</param>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.SslServer.ProcessAccept">
            <summary>
            Callback method for asynchronous accept operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ProcessAuthenticate(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous authenticate operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ProcessSend(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ReceivePayloadAsync(TVA.Communication.TransportProvider{System.Net.Security.SslStream})">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ReceivePayloadAwareAsync(TVA.Communication.TransportProvider{System.Net.Security.SslStream},System.Boolean)">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ProcessReceivePayloadAware(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-aware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ReceivePayloadUnawareAsync(TVA.Communication.TransportProvider{System.Net.Security.SslStream})">
            <summary>
            Initiate method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.ProcessReceivePayloadUnaware(System.IAsyncResult)">
            <summary>
            Callback method for asynchronous receive operation of payload data in "payload-unaware" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.TerminateConnection(TVA.Communication.TransportProvider{System.Net.Security.SslStream},System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="M:TVA.Communication.SslServer.DefaultLocalCertificateSelectionCallback(System.Object,System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,System.Security.Cryptography.X509Certificates.X509Certificate,System.String[])">
            <summary>
            Returns the certificate set by the user.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.PayloadAware">
            <summary>
            Gets or sets a boolean value that indicates whether the payload boundaries are to be preserved during transmission.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.PayloadMarker">
            <summary>
            Gets or sets the byte sequence used to mark the beginning of a payload in a <see cref="P:TVA.Communication.SslServer.PayloadAware"/> transmission.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or empty buffer.</exception>
        </member>
        <member name="P:TVA.Communication.SslServer.AllowDualStackSocket">
            <summary>
            Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.Server">
            <summary>
            Gets the <see cref="T:System.Net.Sockets.Socket"/> object for the <see cref="T:TVA.Communication.TcpServer"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.RemoteCertificateValidationCallback">
            <summary>
            Gets or sets the callback used to validate remote certificates.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.LocalCertificateSelectionCallback">
            <summary>
            Gets or sets the callback used to select local certificates.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.CertificateFile">
            <summary>
            Gets or sets the path to the certificate used for authentication.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.Certificate">
            <summary>
            Gets or sets the certificate used to identify this server.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.EnabledSslProtocols">
            <summary>
            Gets or sets a set of flags which determine the enabled <see cref="T:System.Security.Authentication.SslProtocols"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.SslServer.CheckCertificateRevocation">
            <summary>
            Gets or sets a boolean value that determines whether the certificate revocation list is checked during authentication.
            </summary>
        </member>
        <member name="T:TVA.Communication.Radius.RadiusClient">
            <summary>
            Represents a RADIUS communication client.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusClient.DefaultServerPort">
            <summary>
            Default port of the RADIUS server.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusClient.DefaultNewPinModeMessage1">
            <summary>
            Default text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not Step 1 (ensuring that the user account is in
            the "New Pin" mode) of creating a new pin was successful.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusClient.DefaultNewPinModeMessage2">
            <summary>
            Default text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not Step 2 (new pin is accepted in attempt #1)
             of creating a new pin was successful.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusClient.DefaultNewPinModeMessage3">
            <summary>
            Default text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not Step 3 (new pin is accepted in attempts #2)
            of creating a new pin was successful.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusClient.DefaultNextTokenModeMessage">
            <summary>
            Default text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not a user account is in the "Next Token" mode.
            </summary>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.#ctor(System.String,System.String)">
            <summary>
            Creates an instance of RADIUS client for sending request to a RADIUS server.
            </summary>
            <param name="serverName">Name or address of the RADIUS server.</param>
            <param name="sharedSecret">Shared secret used for encryption and authentication.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.#ctor(System.String,System.Int32,System.String)">
            <summary>
            Creates an instance of RADIUS client for sending request to a RADIUS server.
            </summary>
            <param name="serverName">Name or address of the RADIUS server.</param>
            <param name="serverPort">Port number of the RADIUS server.</param>
            <param name="sharedSecret">Shared secret used for encryption and authentication.</param>
            <remarks></remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.ProcessRequest(TVA.Communication.Radius.RadiusPacket)">
            <summary>
            Send a request to the server and waits for a response back.
            </summary>
            <param name="request">Request to be sent to the server.</param>
            <returns>Response packet if a valid reponse is received from the server; otherwise Nothing.</returns>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.CreateNewPin(System.String,System.String,System.String)">
            <summary>
            Create a new pin for the user.
            </summary>
            <param name="username">Name of the user.</param>
            <param name="token">Current token of the user.</param>
            <param name="pin">New pin of the user.</param>
            <returns>True if a new pin is created for the user successfully; otherwise False.</returns>
            <remarks>NOTE: This method is specific to RSA RADIUS implementation.</remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.Authenticate(System.String,System.String)">
            <summary>
            Authenticates the username and password against the RADIUS server.
            </summary>
            <param name="username">Username to be authenticated.</param>
            <param name="password">Password to be authenticated.</param>
            <returns>Response packet received from the server for the authentication request.</returns>
            <remarks>
            <para>
            The type of response packet (if any) will be one of the following:
            <list>
            <item>AccessAccept: If the authentication is successful.</item>
            <item>AccessReject: If the authentication is not successful.</item>
            <item>AccessChallenge: If the server need more information from the user.</item>
            </list>
            </para>
            <para>
            When an AccessChallenge response packet is received from the server, it contains a State attribute
            that must be included in the AccessRequest packet that is being sent in response to the AccessChallenge
            response. So if this method returns an AccessChallenge packet, then this method is to be called again
            with the requested information (from ReplyMessage attribute) in the password field and the value State
            attribute.
            </para>
            </remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.Authenticate(System.String,System.String,System.Byte[])">
            <summary>
            Authenticates the username and password against the RADIUS server.
            </summary>
            <param name="username">Username to be authenticated.</param>
            <param name="password">Password to be authenticated.</param>
            <param name="state">State value from a previous challenge response.</param>
            <returns>Response packet received from the server for the authentication request.</returns>
            <remarks>
            <para>
            The type of response packet (if any) will be one of the following:
            <list>
            <item>AccessAccept: If the authentication is successful.</item>
            <item>AccessReject: If the authentication is not successful.</item>
            <item>AccessChallenge: If the server need more information from the user.</item>
            </list>
            </para>
            <para>
            When an AccessChallenge response packet is received from the server, it contains a State attribute
            that must be included in the AccessRequest packet that is being sent in response to the AccessChallenge
            response. So if this method returns an AccessChallenge packet, then this method is to be called again
            with the requested information (from ReplyMessage attribute) in the password field and the value State
            attribute.
            </para>
            </remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.IsUserInNewPinMode(TVA.Communication.Radius.RadiusPacket)">
            <summary>
            Determines whether or not the response indicates that the user account is in "New Pin" mode.
            </summary>
            <param name="response">Response packet sent by the server.</param>
            <returns>True if the user account is in "New Pin" mode; otherwise False.</returns>
            <remarks>
            <para>A user's account can be in the "New Pin" mode when set on the server.</para>
            <para>NOTE: This method is specific to RSA RADIUS implementation.</para>
            </remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.IsUserInNextTokenMode(TVA.Communication.Radius.RadiusPacket)">
            <summary>
            Determines whether or not the response indicates that the user account is in "Next Token" mode.
            </summary>
            <param name="response">Response packet sent by the server.</param>
            <returns>True if the user account is in "Next Token" mode; otherwise False.</returns>
            <remarks>
            <para>
            A user's account can enter the "Next Token" mode after the user enters incorrect passwords for a few
            times (3 times by default) and then enters the correct password. Note that repeatedly entering
            incorrect passwords will disable the user account.
            </para>
            <para>NOTE: This method is specific to RSA RADIUS implementation.</para>
            </remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.Dispose">
            <summary>
            Releases the used resources.
            </summary>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.CheckDisposed">
            <summary>
            Helper method to check whether or not the object instance has been disposed.
            </summary>
            <remarks>This method is to be called before performing any operation.</remarks>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusClient.Dispose(System.Boolean)">
            <summary>
            Releases the used resources.
            </summary>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.ServerName">
            <summary>
            Gets or sets the name or address of the RADIUS server.
            </summary>
            <value></value>
            <returns>Name or address of RADIUS server.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.ServerPort">
            <summary>
            Gets or sets the port number of the RADIUS server.
            </summary>
            <value></value>
            <returns>Port number of the RADIUS server.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.RequestAttempts">
            <summary>
            Gets or sets the number of time a request is to sent to the server until a valid response is received.
            </summary>
            <value></value>
            <returns>Number of time a request is to sent to the server until a valid response is received.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.ReponseTimeout">
            <summary>
            Gets or sets the time (in milliseconds) to wait for a response from server after sending a request.
            </summary>
            <value></value>
            <returns>Time (in milliseconds) to wait for a response from server after sending a request.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.SharedSecret">
            <summary>
            Gets or sets the shared secret used between the client and server for encryption and authentication.
            </summary>
            <value></value>
            <returns>Shared secret used between the client and server for encryption and authentication.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.NewPinModeMessage1">
            <summary>
            Gets or sets the text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not Step 1 (ensuring that the user account is in  the
            "New Pin" mode) of creating a new pin was successful.
            </summary>
            <value></value>
            <returns>Text for "New Pin" mode's first message.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.NewPinModeMessage2">
            <summary>
            Gets or sets the text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not Step 2 (new pin is accepted in attempt #1) of creating
            a new pin was successful.
            </summary>
            <value></value>
            <returns>Text for "New Pin" mode's second message.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.NewPinModeMessage3">
            <summary>
            Gets or sets the text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not Step 3 (new pin is accepted in attempts #2) of creating
            a new pin was successful.
            </summary>
            <value></value>
            <returns>Text for "New Pin" mode's third message.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusClient.NextTokenModeMessage">
            <summary>
            Gets or sets the text for comparing with the text of ReplyMessage attribute in an AccessChallenge
            server response to determine whether or not a user account is in the "Next Token" mode.
            </summary>
            <value></value>
            <returns>Text for "Next Token" mode.</returns>
        </member>
        <member name="T:TVA.Communication.ClientState">
            <summary>
            Indicates the current state of the client.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientState.Connecting">
            <summary>
            Client is establishing connection.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientState.Connected">
            <summary>
            Client has established connection.
            </summary>
        </member>
        <member name="F:TVA.Communication.ClientState.Disconnected">
            <summary>
            Client connection is terminated.
            </summary>
        </member>
        <member name="T:TVA.Communication.TransportProvider`1">
            <summary>
            A class for managing the communication between server and client.
            </summary>
            <typeparam name="T"><see cref="T:System.Type"/> of the object used for server-client communication.</typeparam>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.ID">
            <summary>
            ID of the <see cref="T:TVA.Communication.TransportProvider`1"/> object.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.Provider">
            <summary>
            Provider for the transportation of data.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.BytesReceived">
            <summary>
            Number of bytes received in <see cref="P:TVA.Communication.TransportProvider`1.ReceiveBuffer"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.Statistics">
            <summary>
            <see cref="T:TVA.Communication.TransportStatistics"/> for the <see cref="T:TVA.Communication.TransportProvider`1"/> object.
            </summary>
        </member>
        <member name="F:TVA.Communication.TransportProvider`1.MulticastMembershipAddresses">
            <summary>
            Optional multicast membership addresses used when a multicast source address is specified.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.TransportProvider`1"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.SetSendBuffer(System.Int32)">
            <summary>
            Establishes (or reestablishes) a send buffer of a given size.
            </summary>
            <param name="size">Desired minimum size of send buffer.</param>
            <returns>New send buffer.</returns>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.SetReceiveBuffer(System.Int32)">
            <summary>
            Establishes (or reestablishes) a receive buffer of a given size.
            </summary>
            <param name="size">Desired minimum size of receive buffer.</param>
            <returns>New receive buffer.</returns>
        </member>
        <member name="M:TVA.Communication.TransportProvider`1.Reset">
            <summary>
            Resets <see cref="T:TVA.Communication.TransportProvider`1"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.TransportProvider`1.SendBuffer">
            <summary>
            Gets buffer used for sending data.
            </summary>
            <remarks>
            Use <see cref="M:TVA.Communication.TransportProvider`1.SetSendBuffer(System.Int32)"/> to reset and/or establish send buffer size.
            </remarks>
        </member>
        <member name="P:TVA.Communication.TransportProvider`1.SendBufferSize">
            <summary>
            Gets send buffer requested size.
            </summary>
        </member>
        <member name="P:TVA.Communication.TransportProvider`1.ReceiveBuffer">
            <summary>
            Gets buffer used for receiving data.
            </summary>
            <remarks>
            Use <see cref="M:TVA.Communication.TransportProvider`1.SetReceiveBuffer(System.Int32)"/> to reset and/or establish receive buffer size.
            </remarks>
        </member>
        <member name="P:TVA.Communication.TransportProvider`1.ReceiveBufferSize">
            <summary>
            Gets receive buffer requested size.
            </summary>
        </member>
        <member name="T:TVA.Communication.ServerState">
            <summary>
            Indicates the current state of the server.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerState.Running">
            <summary>
            Server is running.
            </summary>
        </member>
        <member name="F:TVA.Communication.ServerState.NotRunning">
            <summary>
            Server is not running.
            </summary>
        </member>
        <member name="T:TVA.Communication.Radius.AttributeType">
            <summary>
            Specifies the type of <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.UserName">
            <summary>
            Attribute indicates the name of the user to be authenticated.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.UserPassword">
            <summary>
            Attribute indicates the password of the user to be authenticated.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.ChapPassword">
            <summary>
            Attribute indicates the response provided by a PPP CHAP user in reponse to the challenge.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.NasIpAddress">
            <summary>
            Attribute indicates the identifying IP address of the NAS requesting user authentication.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.NasPort">
            <summary>
            Attribute indicates the physical port number of the NAS which is authenticating the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.ServiceType">
            <summary>
            Attribute indicates the type of service the user has requested, or the type of service to be provided.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedProtocol">
            <summary>
            Attribute indicates the framing to be used for framed access.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedIpAddress">
            <summary>
            Attribute indicates the address to be configured for the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedIpNetmask">
            <summary>
            Attribute indicates the IP netmask to be configured for the user when user is a router to a network.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedRouting">
            <summary>
            Attribute indicates the routing method for the user when user is a router to a network.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FilterId">
            <summary>
            Attribute indicates the name of the filter list for this user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedMtu">
            <summary>
            Attribute indicates the MTU to be configured for the user when it is not negotiated by some other means.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedCompression">
            <summary>
            Attribute indicates a compression protocol to be used for the link.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginIpHost">
            <summary>
            Attribute indicates the system with which to connect the user when <see cref="F:TVA.Communication.Radius.AttributeType.LoginService"/> attribute is included.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginService">
            <summary>
            Attribute indicates the service to use to connect the user to the login host.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginTcpPort">
            <summary>
            Attribute indicates the TCP port with which the user is to be connected when <see cref="F:TVA.Communication.Radius.AttributeType.LoginService"/> attribute is included.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.ReplyMessage">
            <summary>
            Attribute indicates the text which may be displayed to the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.CallbackNumber">
            <summary>
            Attribute indicates a dialing string to be used for callback.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.CallbackId">
            <summary>
            Attribute indicates the name of a place to be called.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedRoute">
            <summary>
            Attribute provides routing information to be configured for the user on the NAS.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedIpxNetwork">
            <summary>
            Attribute indicates the IPX Network number to be configured for the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.State">
            <summary>
            Attribute available to be sent by the server to the client in an <see cref="F:TVA.Communication.Radius.PacketType.AccessChallenge"/> and must be 
            sent unmodified from the client to the server in the new <see cref="F:TVA.Communication.Radius.PacketType.AccessRequest"/> reply to the challenge.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.Class">
            <summary>
            Attribute available to be sent by the server to the client in an <see cref="F:TVA.Communication.Radius.PacketType.AccessAccept"/> and should 
            be sent unmodified by the client to the accounting server as part of the <see cref="F:TVA.Communication.Radius.PacketType.AccountingRequest"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.VendorSpecific">
            <summary>
            Attribute available to allow vendors to support their own extended attributes.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.SessionTimeout">
            <summary>
            Attribute sets the maximum number of seconds of service to be provided to the user before termination of the session or prompt.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.IdleTimeout">
            <summary>
            Attribute sets the maximum number of consecutive seconds of idle connection allowed to the user before termination of the session or prompt.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.TerminationAction">
            <summary>
            Attribute indicates the action the NAS should take when the specified service is complete.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.CallerStationId">
            <summary>
            Attribute indicates the phone number that the user called using DNIS or similar technology.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.CallingStationId">
            <summary>
            Attribute indicates the phone number the call came from using ANI or similar technology.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.NasIdentifier">
            <summary>
            Attribute indicates a string identifier for the NAS originating the AccessRequest.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.ProxyState">
            <summary>
            Attribute indicates the state a proxy server forwarding requests to the server.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginLatService">
            <summary>
            Attribute indicates the system with which the user is to be connected by LAT.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginLatNode">
            <summary>
            Attribute indicates the Node with which the user is to be automatically connected by LAT.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginLatGroup">
            <summary>
            Attribute indicates the string identifier for the LAT group codes which the user is authorized to use.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedAppleTalkLink">
            <summary>
            Attribute indicates the AppleTalk network number which should be used for the serial link to the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedAppleTalkNetwork">
            <summary>
            Attribute indicates the AppleTalk Network number which the NAS should probe to allocate an AppleTalk node for the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.FramedAppleTalkZone">
            <summary>
            Attribute indicates the AppleTalk Default Zone to be used for this user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.ChapChallenge">
            <summary>
            Attribute contains the CHAP Challenge sent by the NAS to a PPP CHAP user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.NasPortType">
            <summary>
            Attribute indicates the type of physical port of the NAS which is authenticating the user.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.PortLimit">
            <summary>
            Attribute sets the maximum number of ports to be provided to the user by the NAS.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.AttributeType.LoginLatPort">
            <summary>
            Attribute indicates the Port with which the user is to be connected by the LAT.
            </summary>
        </member>
        <member name="T:TVA.Communication.Radius.RadiusPacketAttribute">
            <summary>
            Represents an attribute of <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.
            </summary>
            <seealso cref="T:TVA.Communication.Radius.RadiusPacket"/>
            <seealso cref="T:TVA.Communication.Radius.RadiusClient"/>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.#ctor(TVA.Communication.Radius.AttributeType,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> class.
            </summary>
            <param name="type">Type of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
            <param name="value">Text value of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.#ctor(TVA.Communication.Radius.AttributeType,System.UInt32)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> class.
            </summary>
            <param name="type">Type of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
            <param name="value">32-bit unsigned integer value of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.#ctor(TVA.Communication.Radius.AttributeType,System.Net.IPAddress)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> class.
            </summary>
            <param name="type">Type of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
            <param name="value">IP address value of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.#ctor(TVA.Communication.Radius.AttributeType,System.Byte[])">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> class.
            </summary>
            <param name="type">Type of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
            <param name="value">Byte array value of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.#ctor(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> class.
            </summary>
            <param name="buffer">Buffer containing binary image to be used for initializing <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.</param>
            <param name="startIndex">0-based starting index of initialization data in the <paramref name="buffer"/>.</param>
            <param name="length">Valid number of bytes in <paramref name="buffer"/> from <paramref name="startIndex"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.ParseBinaryImage(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Parses <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> object by parsing the specified <paramref name="buffer"/> containing a binary image.
            </summary>
            <param name="buffer">Buffer containing binary image to parse.</param>
            <param name="startIndex">0-based starting index in the <paramref name="buffer"/> to start parsing.</param>
            <param name="length">Valid number of bytes within <paramref name="buffer"/> from <paramref name="startIndex"/>.</param>
            <returns>The number of bytes used for initialization in the <paramref name="buffer"/> (i.e., the number of bytes parsed), or 0 if not enough data.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacketAttribute.GenerateBinaryImage(System.Byte[],System.Int32)">
            <summary>
            Generates a binary representation of this <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> object and copies it into the given buffer.
            </summary>
            <param name="buffer">Buffer used to hold generated binary image of the source object.</param>
            <param name="startIndex">0-based starting index in the <paramref name="buffer"/> to start writing.</param>
            <returns>The number of bytes written to the <paramref name="buffer"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <see cref="P:TVA.Parsing.ISupportBinaryImage.BinaryLength"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <see cref="P:TVA.Parsing.ISupportBinaryImage.BinaryLength"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacketAttribute.Type">
            <summary>
            Gets or sets the type of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacketAttribute.Value">
            <summary>
            Gets or sets the value of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null or zero-length byte array.</exception>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacketAttribute.BinaryLength">
            <summary>
            Gets the length of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.Radius.PacketType">
            <summary>
            Specifies the type of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccessRequest">
            <summary>
            Packet sent to a RADIUS server for verification of credentials.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccessAccept">
            <summary>
            Packet sent by a RADIUS server when credential verification is successful.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccessReject">
            <summary>
            Packet sent by a RADIUS server when credential verification is unsuccessful.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccountingRequest">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccountingResponse">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccountingStatus">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.PasswordRequest">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.PasswordAccept">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.PasswordReject">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccountingMessage">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.AccessChallenge">
            <summary>
            Packet sent by a RADIUS server when further information is needed for credential verification.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.StatuServer">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.PacketType.StatusClient">
            <summary>
            Not used. No description available. [RFC 2882]
            </summary>
        </member>
        <member name="T:TVA.Communication.Radius.RadiusPacket">
            <summary>
            Represents a data packet transferred between RADIUS client and server.
            </summary>
            <seealso cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>
            <seealso cref="T:TVA.Communication.Radius.RadiusClient"/>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.#ctor(TVA.Communication.Radius.PacketType)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/> class.
            </summary>
            <param name="type">Type of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.#ctor(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/> class.
            </summary>
            <param name="binaryImage">Binary image to be used for initializing <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.</param>
            <param name="startIndex">0-based starting index of initialization data in the <paramref name="binaryImage"/>.</param>
            <param name="length">Valid number of bytes in <paramref name="binaryImage"/> from <paramref name="startIndex"/>.</param>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.ParseBinaryImage(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Parses <see cref="T:TVA.Communication.Radius.RadiusPacket"/> object by parsing the specified <paramref name="buffer"/> containing a binary image.
            </summary>
            <param name="buffer">Buffer containing binary image to parse.</param>
            <param name="startIndex">0-based starting index in the <paramref name="buffer"/> to start parsing.</param>
            <param name="length">Valid number of bytes within <paramref name="buffer"/> from <paramref name="startIndex"/>.</param>
            <returns>The number of bytes used for initialization in the <paramref name="buffer"/> (i.e., the number of bytes parsed), or 0 if not enough data.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.GenerateBinaryImage(System.Byte[],System.Int32)">
            <summary>
            Generates a binary representation of this <see cref="T:TVA.Communication.Radius.RadiusPacket"/> object and copies it into the given buffer.
            </summary>
            <param name="buffer">Buffer used to hold generated binary image of the source object.</param>
            <param name="startIndex">0-based starting index in the <paramref name="buffer"/> to start writing.</param>
            <returns>The number of bytes written to the <paramref name="buffer"/>.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <see cref="P:TVA.Parsing.ISupportBinaryImage.BinaryLength"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <see cref="P:TVA.Parsing.ISupportBinaryImage.BinaryLength"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.GetAttributeValue(TVA.Communication.Radius.AttributeType)">
            <summary>
            Gets the value of the specified <paramref name="attributeType"/> if it is present in the <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.
            </summary>
            <param name="attributeType"><see cref="P:TVA.Communication.Radius.RadiusPacketAttribute.Type"/> of the <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> whose value is to be retrieved.</param>
            <returns><see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>.<see cref="P:TVA.Communication.Radius.RadiusPacketAttribute.Value"/> if <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/> is present; otherwise null.</returns>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusPacket.Encoding">
            <summary>
            <see cref="F:TVA.Communication.Radius.RadiusPacket.Encoding"/> format for encoding text.
            </summary>
        </member>
        <member name="F:TVA.Communication.Radius.RadiusPacket.EndianOrder">
            <summary>
            <see cref="F:TVA.Communication.Radius.RadiusPacket.EndianOrder"/> to use for byte conversion.
            </summary>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.CreateRequestAuthenticator(System.String)">
            <summary>
            Generates an "Authenticator" value used in a RADIUS request packet sent by the client to server.
            </summary>
            <param name="sharedSecret">The shared secret to be used in generating the output.</param>
            <returns>A byte array.</returns>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.CreateResponseAuthenticator(System.String,TVA.Communication.Radius.RadiusPacket,TVA.Communication.Radius.RadiusPacket)">
            <summary>
            Generates an "Authenticator" value used in a RADIUS response packet sent by the server to client.
            </summary>
            <param name="sharedSecret">The shared secret key.</param>
            <param name="requestPacket">RADIUS packet sent from client to server.</param>
            <param name="responsePacket">RADIUS packet sent from server to client.</param>
            <returns>A byte array.</returns>
        </member>
        <member name="M:TVA.Communication.Radius.RadiusPacket.EncryptPassword(System.String,System.String,System.Byte[])">
            <summary>
            Generates an encrypted password using the RADIUS protocol specification (RFC 2285).
            </summary>
            <param name="password">User's password.</param>
            <param name="sharedSecret">Shared secret key.</param>
            <param name="requestAuthenticator">Request authenticator byte array.</param>
            <returns>A byte array.</returns>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacket.Type">
            <summary>
            Gets or sets the type of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacket.Identifier">
            <summary>
            Gets or sets the <see cref="T:TVA.Communication.Radius.RadiusPacket"/> identifier.
            </summary>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacket.Authenticator">
            <summary>
            Gets or sets the <see cref="T:TVA.Communication.Radius.RadiusPacket"/> authenticator.
            </summary>
            <exception cref="T:System.ArgumentNullException">The value being assigned is null.</exception>
            <exception cref="T:System.ArgumentException">The value being assigned is not 16-bytes in length.</exception>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacket.Attributes">
            <summary>
            Gets a list of <see cref="T:TVA.Communication.Radius.RadiusPacketAttribute"/>s.
            </summary>
        </member>
        <member name="P:TVA.Communication.Radius.RadiusPacket.BinaryLength">
            <summary>
            Gets the length of the <see cref="T:TVA.Communication.Radius.RadiusPacket"/>.
            </summary>
        </member>
        <member name="T:TVA.Communication.IPStack">
            <summary>
            IP stack enumeration.
            </summary>
        </member>
        <member name="F:TVA.Communication.IPStack.IPv6">
            <summary>
            IPv6 stack.
            </summary>
            <remarks>
            Requests to use IPv6 stack if possible.
            </remarks>
        </member>
        <member name="F:TVA.Communication.IPStack.IPv4">
            <summary>
            IPv4 stack.
            </summary>
            <remarks>
            Requests to use IPv4 stack if possible.
            </remarks>
        </member>
        <member name="F:TVA.Communication.IPStack.Default">
            <summary>
            Default stack.
            </summary>
            <remarks>
            Requests to use the default OS IP stack.
            </remarks>
        </member>
        <member name="T:TVA.Communication.Transport">
            <summary>
            Defines helper methods related to IP socket based communications.
            </summary>
        </member>
        <member name="F:TVA.Communication.Transport.PortRangeLow">
            <summary>
            Specifies the lowest valid port number for a <see cref="T:System.Net.Sockets.Socket"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Transport.PortRangeHigh">
            <summary>
            Specifies the highest valid port number for a <see cref="T:System.Net.Sockets.Socket"/>.
            </summary>
        </member>
        <member name="F:TVA.Communication.Transport.EndpointFormatRegex">
            <summary>
            Regular expression used to validate the format for an endpoint.
            </summary>
            <remarks>
            <para>
            Matches the following valid input:<br/>
            - localhost:80<br/>
            - 127.0.0.1:80<br/>
            - [::1]:80<br/>
            - [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80
            </para>
            </remarks>
        </member>
        <member name="M:TVA.Communication.Transport.CreateEndPoint(System.String,System.Int32,TVA.Communication.IPStack)">
            <summary>
            Creates an <see cref="T:System.Net.IPEndPoint"/> for the specified host name and port number.
            </summary>
            <param name="hostNameOrAddress">The host name or IP address to resolve.</param>
            <param name="port">The port number to be associated with the address.</param>
            <param name="stack">Desired IP stack to use.</param>
            <returns>An <see cref="T:System.Net.IPEndPoint"/> object.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.CreateSocket(System.String,System.Int32,System.Net.Sockets.ProtocolType,TVA.Communication.IPStack,System.Boolean)">
            <summary>
            Creates a <see cref="T:System.Net.Sockets.Socket"/> for the specified <paramref name="port"/> and <paramref name="protocol"/>.
            </summary>
            <param name="address">The local address where the <see cref="T:System.Net.Sockets.Socket"/> will be bound.</param>
            <param name="port">The port number at which the <see cref="T:System.Net.Sockets.Socket"/> will be bound.</param>
            <param name="protocol">One of the <see cref="T:System.Net.Sockets.ProtocolType"/> values.</param>
            <param name="stack">Desired IP stack to use.</param>
            <param name="allowDualStackSocket">Determines if dual-mode socket is allowed when endpoint address is IPv6.</param>
            <returns>An <see cref="T:System.Net.Sockets.Socket"/> object.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsLocalAddress(System.String)">
            <summary>
            Determines if an IP address (or DNS name) is a local IP address.
            </summary>
            <param name="hostNameOrAddress">DNS name or IP address to test.</param>
            <returns><c>true</c> if <paramref name="hostNameOrAddress"/> is a local IP address; otherwise <c>false</c>.</returns>
            <exception cref="T:System.Net.Sockets.SocketException">An error is encountered when resolving <paramref name="hostNameOrAddress"/>.</exception>
            <exception cref="T:System.ArgumentException"><paramref name="hostNameOrAddress"/> is an invalid IP address.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">The length of <paramref name="hostNameOrAddress"/> is greater than 255 characters.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="hostNameOrAddress"/> is null.</exception>
        </member>
        <member name="M:TVA.Communication.Transport.GetDefaultIPStack">
            <summary>
            Gets the default IP stack for this system.
            </summary>
            <returns>
            System's assumed default IP stack.
            </returns>
        </member>
        <member name="M:TVA.Communication.Transport.GetInterfaceIPStack(System.Collections.Generic.Dictionary{System.String,System.String})">
            <summary>
            Derives the desired <see cref="T:TVA.Communication.IPStack"/> from the "interface" setting in the connection string key/value pairs.
            </summary>
            <param name="connectionStringKVPairs">Connection string key/value pairs.</param>
            <returns>Desired <see cref="T:TVA.Communication.IPStack"/> based on "interface" setting.</returns>
            <remarks>
            The "interface" setting will be added to the <paramref name="connectionStringKVPairs"/> if it
            doesn't exist, in this case return value will be <see cref="F:TVA.Communication.IPStack.Default"/>.
            </remarks>
        </member>
        <member name="M:TVA.Communication.Transport.IsIPv6IP(System.String)">
            <summary>
            Determines if the specified <paramref name="ipAddress"/> is an IPv6 IP.
            </summary>
            <param name="ipAddress">IP address to check.</param>
            <returns>true if the <paramref name="ipAddress"/> is IPv6 IP; otherwise false.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsMulticastIP(System.Net.IPAddress)">
            <summary>
            Determines if the specified <paramref name="ipAddress"/> is a multicast IP.
            </summary>
            <param name="ipAddress">IP address to check.</param>
            <returns>true if the <paramref name="ipAddress"/> is multicast IP; otherwise false.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsPortNumberValid(System.String)">
            <summary>
            Determines whether the specified port is valid.
            </summary>
            <param name="port">The port number to be validated.</param>
            <returns>True if the port number is valid.</returns>
        </member>
        <member name="M:TVA.Communication.Transport.IsDestinationReachable(System.Net.IPEndPoint)">
            <summary>
            Determines if the specified UDP destination is listening for data.
            </summary>
            <param name="targetIPEndPoint">The <see cref="T:System.Net.IPEndPoint"/> for the UDP destination to be checked.</param>
            <returns>true if the UDP destination is listening for data; otherwise false.</returns>
        </member>
        <member name="T:TVA.Communication.UdpClient">
            <summary>
            Represents a UDP-based communication server.
            </summary>
            <remarks>
            <para>
            Use <see cref="T:TVA.Communication.UdpClient"/> when the primary purpose is to receive data.
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpClient.Client"/> socket can be bound to a specified interface on a machine with multiple interfaces by 
            specifying the interface in the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> (Example: "Server=localhost:8888; Port=8989; Interface=127.0.0.1")
            </para>
            <para>
            The <see cref="P:TVA.Communication.UdpClient.Client"/> socket can be used just for transmitting data without being bound to a local interface 
            by specifying -1 for the port number in the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> (Example: "Server=localhost:8888; Port=-1")
            </para>
            </remarks>
            <example>
            This example shows how to use the <see cref="T:TVA.Communication.UdpClient"/> component:
            <code>
            using System;
            using TVA;
            using TVA.Communication;
            using TVA.Security.Cryptography;
            using TVA.IO.Compression;
            
            class Program
            {
                static UdpClient s_client;
            
                static void Main(string[] args)
                {
                    // Initialize the client.
                    s_client = new UdpClient("Server=localhost:8888; Port=8989");
                    s_client.Handshake = false;
                    s_client.ReceiveTimeout = -1;
                    s_client.Encryption = CipherStrength.None;
                    s_client.Compression = CompressionStrength.NoCompression;
                    s_client.SecureSession = false;
                    s_client.Initialize();
                    // Register event handlers.
                    s_client.ConnectionAttempt += s_client_ConnectionAttempt;
                    s_client.ConnectionEstablished += s_client_ConnectionEstablished;
                    s_client.ConnectionTerminated += s_client_ConnectionTerminated;
                    s_client.ReceiveDataComplete += s_client_ReceiveDataComplete;
                    // Connect the client.
                    s_client.Connect();
            
                    // Transmit user input to the server.
                    string input;
                    while (string.Compare(input = Console.ReadLine(), "Exit", true) != 0)
                    {
                        s_client.Send(input);
                    }
            
                    // Disconnect the client on shutdown.
                    s_client.Dispose();
                }
            
                static void s_client_ConnectionAttempt(object sender, EventArgs e)
                {
                    Console.WriteLine("Client is connecting to server.");
                }
            
                static void s_client_ConnectionEstablished(object sender, EventArgs e)
                {
                    Console.WriteLine("Client connected to server.");
                }
            
                static void s_client_ConnectionTerminated(object sender, EventArgs e)
                {
                    Console.WriteLine("Client disconnected from server.");
                }
            
                static void s_client_ReceiveDataComplete(object sender, EventArgs&lt;byte[], int&gt; e)
                {
                    Console.WriteLine(string.Format("Received data - {0}.", s_client.TextEncoding.GetString(e.Argument1, 0, e.Argument2)));
                }
            }
            </code>
            </example>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultReceiveBufferSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ReceiveBufferSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultMaxPacketSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpClient.MaxPacketSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultAllowDualStackSocket">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpClient.AllowDualStackSocket"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultMaxSendQueueSize">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.UdpClient.MaxSendQueueSize"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.DefaultConnectionString">
            <summary>
            Specifies the default value for the <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> property.
            </summary>
        </member>
        <member name="F:TVA.Communication.UdpClient.SIO_UDP_CONNRESET">
            <summary>
            Specifies the constant to be used for disabling <see cref="F:System.Net.Sockets.SocketError.ConnectionReset"/> when endpoint is not listening.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpClient"/> class.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpClient"/> class.
            </summary>
            <param name="connectString">Connect string of the <see cref="T:TVA.Communication.UdpClient"/>. See <see cref="F:TVA.Communication.UdpClient.DefaultConnectionString"/> for format.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the <see cref="T:TVA.Communication.UdpClient"/> class.
            </summary>
            <param name="container"><see cref="T:System.ComponentModel.IContainer"/> object that contains the <see cref="T:TVA.Communication.UdpClient"/>.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a number of bytes from the current received data buffer and writes those bytes into a byte array at the specified offset.
            </summary>
            <param name="buffer">Destination buffer used to hold copied bytes.</param>
            <param name="startIndex">0-based starting index into destination <paramref name="buffer"/> to begin writing data.</param>
            <param name="length">The number of bytes to read from current received data buffer and write into <paramref name="buffer"/>.</param>
            <returns>The number of bytes read.</returns>
            <remarks>
            This function should only be called from within the <see cref="E:TVA.Communication.ClientBase.ReceiveData"/> event handler. Calling this method outside
            this event will have unexpected results.
            </remarks>
            <exception cref="T:System.InvalidOperationException">No received data buffer has been defined to read.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <paramref name="startIndex"/> or <paramref name="length"/> is less than 0 -or- 
            <paramref name="startIndex"/> and <paramref name="length"/> will exceed <paramref name="buffer"/> length.
            </exception>
        </member>
        <member name="M:TVA.Communication.UdpClient.SaveSettings">
            <summary>
            Saves <see cref="T:TVA.Communication.TcpServer"/> settings to the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.LoadSettings">
            <summary>
            Loads saved <see cref="T:TVA.Communication.TcpServer"/> settings from the config file if the <see cref="P:TVA.Communication.ServerBase.PersistSettings"/> property is set to true.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.Disconnect">
            <summary>
            Disconnects the <see cref="T:TVA.Communication.UdpClient"/> from the connected server synchronously.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ConnectAsync">
            <summary>
            Connects the <see cref="T:TVA.Communication.UdpClient"/> to the server asynchronously.
            </summary>
            <exception cref="T:System.FormatException">Server property in <see cref="P:TVA.Communication.ClientBase.ConnectionString"/> is invalid.</exception>
            <exception cref="T:System.InvalidOperationException">Attempt is made to connect the <see cref="T:TVA.Communication.UdpClient"/> when it is not disconnected.</exception>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpClient.AddMulticastMembership(System.Net.IPAddress,System.Net.IPAddress)">
            <summary>
            Adds a multicast membership to the UDP socket.
            </summary>
            <param name="serverAddress">Multicast address to join.</param>
            <param name="sourceAddress">Address which defines the source of the data or null if the membership is not source-specific.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.DropMulticastMembership(System.Net.IPAddress,System.Net.IPAddress)">
            <summary>
            Drops a multicast membership from the UDP socket.
            </summary>
            <param name="serverAddress">Multicast address to drop.</param>
            <param name="sourceAddress">Address which defines the source of the data or null if the membership is not source-specific.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:TVA.Communication.UdpClient"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.ValidateConnectionString(System.String)">
            <summary>
            Validates the specified <paramref name="connectionString"/>.
            </summary>
            <param name="connectionString">Connection string to be validated.</param>
            <exception cref="T:System.ArgumentException">Port property is missing.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Port property value is not between <see cref="F:TVA.Communication.Transport.PortRangeLow"/> and <see cref="F:TVA.Communication.Transport.PortRangeHigh"/>.</exception>
        </member>
        <member name="M:TVA.Communication.UdpClient.OpenPort">
            <summary>
            Connects to the <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.SendDataAsync(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpClient.SendDataToAsync(System.Byte[],System.Int32,System.Int32,System.Net.EndPoint)">
            <summary>
            Sends data to the server asynchronously.
            </summary>
            <param name="data">The buffer that contains the binary data to be sent.</param>
            <param name="offset">The zero-based position in the <paramref name="data"/> at which to begin sending data.</param>
            <param name="length">The number of bytes to be sent from <paramref name="data"/> starting at the <paramref name="offset"/>.</param>
            <param name="destination">The end point which identifies the destination for the data.</param>
            <returns><see cref="T:System.Threading.WaitHandle"/> for the asynchronous operation.</returns>
        </member>
        <member name="M:TVA.Communication.UdpClient.OnSendDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.SendDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.OnReceiveDataException(System.Exception)">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.
            </summary>
            <param name="ex">Exception to send to <see cref="E:TVA.Communication.ClientBase.ReceiveDataException"/> event.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.OnConnectionTerminated">
            <summary>
            Raises the <see cref="E:TVA.Communication.ClientBase.ConnectionTerminated"/> event.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.SendPayload(TVA.Communication.UdpClient.UdpClientPayload)">
            <summary>
            Sends a payload on the socket.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ProcessSend">
            <summary>
            Callback method for asynchronous send operation.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ReceivePayloadAsync">
            <summary>
            Initiate method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.ProcessReceive">
            <summary>
            Callback method for asynchronous receive operation of payload data.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.TerminateConnection(System.Boolean)">
            <summary>
            Processes the termination of client.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.OnReceive(System.Net.EndPoint,System.Net.Sockets.IPPacketInformation,System.Byte[],System.Int32)">
            <summary>
            Calls all the receive handlers in sequence.
            </summary>
        </member>
        <member name="M:TVA.Communication.UdpClient.OnReceiveDataFrom(System.Net.EndPoint,System.Net.Sockets.IPPacketInformation,System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.UdpClient.ReceiveDataFrom"/> event.
            </summary>
            <param name="remoteEndPoint">End-point from which data has been received.</param>
            <param name="size">Number of bytes received from the client.</param>
        </member>
        <member name="M:TVA.Communication.UdpClient.OnReceiveDataFromComplete(System.Net.EndPoint,System.Net.Sockets.IPPacketInformation,System.Byte[],System.Int32)">
            <summary>
            Raises the <see cref="E:TVA.Communication.UdpClient.ReceiveDataFrom"/> event.
            </summary>
            <param name="remoteEndPoint">End-point from which data has been received.</param>
            <param name="data">Data received from the client.</param>
            <param name="size">Number of bytes received from the client.</param>
        </member>
        <member name="E:TVA.Communication.UdpClient.ReceiveDataFrom">
            <summary>
            Occurs when unprocessed data has been received from the server.
            </summary>
            <remarks>
            <para>
            This event can be used to receive a notification that server data has arrived. The <see cref="M:TVA.Communication.UdpClient.Read(System.Byte[],System.Int32,System.Int32)"/> method can then be used
            to copy data to an existing buffer. In many cases it will be optimal to use an existing buffer instead of subscribing to the
            <see cref="E:TVA.Communication.UdpClient.ReceiveDataFromComplete"/> event.
            </para>
            <para>
            <see cref="F:TVA.EventArgs`2.Argument1"/> is the end-point that data has been received from.<br/>
            <see cref="F:TVA.EventArgs`2.Argument2"/> is the number of bytes received in the buffer from the server.
            </para>
            </remarks>
        </member>
        <member name="E:TVA.Communication.UdpClient.ReceiveDataFromComplete">
            <summary>
            Occurs when data received from the server has been processed and is ready for consumption.
            </summary>
            <remarks>
            <see cref="F:TVA.EventArgs`3.Argument1"/> is the end-point that data has been received from.<br/>
            <see cref="F:TVA.EventArgs`3.Argument2"/> is a new buffer containing post-processed data received from the server starting at index zero.<br/>
            <see cref="F:TVA.EventArgs`3.Argument3"/> is the number of post-processed bytes received in the buffer from the server.
            </remarks>
        </member>
        <member name="P:TVA.Communication.UdpClient.AllowDualStackSocket">
            <summary>
            Gets or sets a boolean value that determines if dual-mode socket is allowed when endpoint address is IPv6.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.MaxSendQueueSize">
            <summary>
            Gets or sets the maximum size for the send queue before payloads are dumped from the queue.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.Client">
            <summary>
            Gets the <see cref="T:TVA.Communication.TransportProvider`1"/> object for the <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.ServerUri">
            <summary>
            Gets the server URI of the <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.ReceiveBufferSize">
            <summary>
            Gets or sets the size of the buffer used by the client for receiving data from the server.
            </summary>
            <exception cref="T:System.ArgumentException">The value being assigned is either zero or negative.</exception>
        </member>
        <member name="P:TVA.Communication.UdpClient.MaxPacketSize">
            <summary>
            Gets or sets the maximum expected size for packets being received by this <see cref="T:TVA.Communication.UdpClient"/>.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.ReceivePacketInfo">
            <summary>
            Gets or sets the flag that determines whether the UDP client
            should attempt to receive packet info when receiving data
            from the socket.
            </summary>
        </member>
        <member name="P:TVA.Communication.UdpClient.Status">
            <summary>
            Gets the descriptive status of the client.
            </summary>
        </member>
    </members>
</doc>
